import axios from "axios";
import router from "../router"
import ElementUI from 'element-ui';
import NProgress from "nprogress"
//配置基础地址,并判断是否是开发环境
axios.defaults.baseURL=process.env.NODE_ENV==="development" ? "/api":"http://www.chst.vip"

axios.defaults.withCredentials=true;//允许请求携带认证

//创建请求拦截器，可以给每个请求都携带上想要请求的内容
//先向后台发送请求，在请求的同时，给请求头携带token,但登录和注册不需要携带token,其他请求都需要携带token
 axios.interceptors.request.use(config=>{ //设置拦截器固定写法
    //首次登录和注册不需要携带token，登陆成功之后服务器才会给token
    if(config.url=="/users/login"){
        return config  //放行
    }else{
    //config指每一个请求对象
    let token=localStorage.getItem("login-tokin") //将本地token取出
    config.headers['authorization']=token  //在请求头中携带token
    return config
    }
})

//中断请求
export let CancelToken=axios.CancelToken //该函数的作用就是用来取消接口

//响应拦截
axios.interceptors.response.use(config=>{
    //console.log(config);
    let {data} =config
    if(data.code=="1004" ||data.code=="10022"){ //在当前的后台api中，10022代表token效验失败，提示错误，并且让页面跳转到登入页
       // console.log(router);去原型上找有push方法
       localStorage.removeItem("login-tokin")
        router.push("/login")
       // console.log(ElementUI);
       ElementUI.Message.error("登入信息失败，请重新登录")
       window.location.reload()
    }
    return config //放行
})
axios.create({
    timeout:4000
})

export default axios